/***************************************************************************/
/* Procedimiento:  Migracion_EntradaInsertar
/* Descripcion:   Insertar o Modifica una fila en la tabla Migracion_Entrada
/* Parametros:    ?InfoParametros
/*                pTransaccion. Numero identificador de la Transaccion
/*                pMensaje. Mensaje de comfirmacion o excepcion
/* Comentarios:         
/****************************************************************************/

PROCEDURE  Migracion_EntradaInsertarModificar(pnidDocumento NUMBER, pnidCaptEntrada NUMBER, 
						pfecha_Arribo VARCHAR2, ppuertoMaritimo VARCHAR2, pbuqueMotor VARCHAR2, 
						pbandera VARCHAR2, pmatricula VARCHAR2, ptipo_Buque NUMBER, 
						pprocedencia VARCHAR2, pdestino VARCHAR2, pnidTrafico NUMBER, 
						ppesoBruto NUMBER, ppesoNeto NUMBER, pcapitan VARCHAR2, 
						pnacionalidad VARCHAR2, ptripulantes NUMBER, ppasajeros NUMBER, 
						pterminal VARCHAR2, pcargamento VARCHAR2, pestadia NUMBER, 
						pmuelle VARCHAR2, pfacturar VARCHAR2, prfc VARCHAR2, 
						pdireccion VARCHAR2, pnidViaje NUMBER, pTransaccion OUT NUMBER, pMensaje OUT VARCHAR2)
AS
vExisteRegistro NUMBER(1);
BEGIN
  SELECT count(*)
  INTO   vExisteRegistro
  FROM   Migracion_Entrada
  WHERE  nidDocumento=pNidDocumento;
  
  IF vExisteRegistro=0 THEN
    INSERT INTO Migracion_Entrada
	           (nid, nidDocumento, nidCaptEntrada, 
						fecha_Arribo, puertoMaritimo, buqueMotor, 
						bandera, matricula, tipo_Buque, 
						procedencia, destino, nidTrafico, 
						pesoBruto, pesoNeto, capitan, 
						nacionalidad, tripulantes, pasajeros, 
						terminal, cargamento, estadia, 
						muelle, facturar, rfc, 
						direccion, nidViaje)
    VALUES     (seq_Migracion_Entrada.nextval, pnidDocumento, pnidCaptEntrada, 
						to_date(pfecha_Arribo,'DD/MM/YYYY HH24:MI:SS'), ppuertoMaritimo, pbuqueMotor, 
						pbandera, pmatricula, ptipo_Buque, 
						pprocedencia, pdestino, pnidTrafico, 
						ppesoBruto, ppesoNeto, pcapitan, 
						pnacionalidad, ptripulantes, ppasajeros, 
						pterminal, pcargamento, pestadia, 
						pmuelle, pfacturar, prfc, 
						pdireccion, pnidViaje);
  ELSE
    UPDATE Migracion_Entrada
    SET    nidDocumento=pnidDocumento, nidCaptEntrada=pnidCaptEntrada, 
		fecha_Arribo=to_date(pfecha_Arribo,'DD/MM/YYYY HH24:MI:SS'), puertoMaritimo=ppuertoMaritimo, buqueMotor=pbuqueMotor, 
		bandera=pbandera, matricula=pmatricula, tipo_Buque=ptipo_Buque, 
		procedencia=pprocedencia, destino=pdestino, nidTrafico=pnidTrafico, 
		pesoBruto=ppesoBruto, pesoNeto=ppesoNeto, capitan=pcapitan, 
		nacionalidad=pnacionalidad, tripulantes=ptripulantes, pasajeros=ppasajeros, 
		terminal=pterminal, cargamento=pcargamento, estadia=pestadia, 
		muelle=pmuelle, facturar=pfacturar, rfc=prfc, 
		direccion=pdireccion, nidViaje=pnidViaje
    WHERE  nidDocumento=pNidDocumento;
  END IF;
  
  COMMIT;
  pTransaccion := 1;
  pMensaje := 'Terminado OK';
  dbms_output.put_line('Terminado OK');

EXCEPTION
  WHEN OTHERS THEN
    pTransaccion := 0;
    pMensaje := 'Error en  Migracion_Entrada_InsertarModificar:' || SQLCODE || ' Mensaje: ' || sqlerrm;
    dbms_output.put_line('Error en  Migracion_Entrada_InsertarModificar:' || SQLCODE || ' Mensaje: ' || sqlerrm);
END;
